//#include <stdio.h>
//#include <stdlib.h>
//struct list{
//	int num;
//	float score;
//	struct list* next;
//};
//typedef struct list LinkNode;
//typedef struct list* LinkList;
//LinkList CreateList(){
//	LinkList head=NULL,p=NULL,q=NULL;
//	int anum;
//	float mark;
//	while(1){
//		scanf("%d",&anum);
//		scanf("%f",&mark);
//		if(anum>0)
//		{
//			q=(LinkList)malloc(sizeof(LinkNode));
//			q->num=anum;
//			q->score=mark;
//			q->next=NULL;
//		}
//		else
//			break;
//		if(head==NULL)
//			head=p=q;
//		else
//			p->next=q;
//		p=q;
//	}
//	return head;
//}
//
//LinkList AddNode(LinkList head,int anum,float mark){
//	LinkList p=head,q=NULL;
//	q=(LinkList)malloc(sizeof(LinkNode));
//	q->num=anum;
//	q->score=mark;
//	q->next=NULL;
//	if(!head)
//		head=q;
//	else{
//		while(p->next!=NULL)
//			p=p->next;
//		p->next=q;
//	}
//	return head;
//}
//LinkList CompareNode(LinkList head1,LinkList head2){
//	LinkList head3=NULL;
//	if(head1==NULL&&head2)
//	{
//		head3=head2;
//		return head3;
//	}
//	if(head2==NULL&&head1)
//	{
//		head3=head1;
//		return head3;
//	}
//	while(head1!=NULL&&head2!=NULL)
//	{
//		if(head1->num<head2->num)
//		{
//			head3=AddNode(head3,head1->num,head1->score);
//			head1=head1->next;
//		}
//		else 
//		{
//			head3=AddNode(head3,head2->num,head2->score);
//			head2=head2->next;
//		}
//	}
//	if(head1){
//		while(head1){
//			head3=AddNode(head3,head1->num,head1->score);
//			head1=head1->next;
//		}
//	}
//	if(head2){
//		while(head2){
//			head3=AddNode(head3,head2->num,head2->score);
//			head2=head2->next;
//		}
//	}return head3;
//}
//void PrintList(LinkList head)
//{
//	LinkList p=head;
//	while(p){
//		printf("%d %f\n",p->num,p->score);
//		p=p->next;
//	}
//}
//void FreeList(LinkList head){
//	LinkList p,q;
//	p=q=head;
//	while(p){
//		q=p->next;
//		free(p);
//		p=q;
//	}
//}
//int main()
//{
//	LinkList head1,head2,head3;
//	head1=CreateList();
//	head2=CreateList();
//	head3=CompareNode(head1,head2);
//	PrintList(head3);
//	if(head3!=head1&&head3!=head2)
//		FreeList(head3);
//	FreeList(head1);
//	FreeList(head2);
//	return 0;
//}

//#include <stdio.h>
//#include <stdlib.h>
//#include <string.h>
//struct list{
//	int num;
//	float score;
//	char name[50];
//	struct list* next;
//};
//typedef struct list LinkNode;
//typedef struct list* LinkList;
//LinkList CreateList(){
//	LinkList head=NULL,p=NULL,q=NULL;
//	int anum;
//	float mark;
//	while(1){
//		scanf("%d",&anum);
//		scanf("%f",&mark);
//		if(anum>0)
//		{
//			q=(LinkList)malloc(sizeof(LinkNode));
//			gets(q->name);
//			q->num=anum;
//			q->score=mark;
//			q->next=NULL;
//		}
//		else
//			break;
//		if(head==NULL)
//			head=p=q;
//		else
//			p->next=q;
//		p=q;
//	}
//	return head;
//}
//LinkList DeleteNode(LinkList head){
//	LinkList s,p,q;
//	s=p=q=head;
//	while(p){
//		s=p;
//		q=p->next;
//		while(q){
//			if(q->num==p->num)
//			{
//				s->next=q->next;
//				free(q);
//				q=s->next;
//			}
//			else{
//				s=q;
//				q=q->next;
//			}
//		}
//		p=p->next;
//	}
//	return head;
//}
//
//
//void PrintList(LinkList head)
//{
//	LinkList p=head;
//	while(p){
//		printf("%d %s %f\n",p->num,p->name,p->score);
//		p=p->next;
//	}
//}
//void FreeList(LinkList head){
//	LinkList p,q;
//	p=q=head;
//	while(p){
//		q=p->next;
//		free(p);
//		p=q;
//	}
//}
//int main()
//{
//	LinkList head1;
//	head1=CreateList();
//	head1=DeleteNode(head1);
//	PrintList(head1);
//	FreeList(head1);
//	return 0;
//}

//#include <stdio.h>
//#include <stdlib.h>
//struct Stu{
//	int data;
//	struct Stu * next;
//};
//typedef struct Stu LinkNode;
//typedef struct Stu* LinkList;
//LinkList CreateList(){
//	LinkList head=NULL,p=NULL,q=NULL;
//	int anum;
//	while(1){
//		scanf("%d",&anum);
//		if(anum>0)
//		{
//			q=(LinkList)malloc(sizeof(LinkNode));
//			q->data=anum;
//			q->next=NULL;
//		}
//		else
//			break;
//		if(head==NULL)
//			head=p=q;
//		else
//			p->next=q;
//		p=q;
//	}
//	return head;
//}
//LinkList ReverseList(LinkList head){
//	LinkList p,q,s;
//	s=NULL;
//	p=head;
//	while(p){
//		q=p->next;
//		p->next=s;
//		s=p;
//		p=q;
//	}
//	return s;
//}
//
//void PrintList(LinkList head)
//{
//	LinkList p=head;
//	while(p){
//		printf("%d \n",p->data);
//		p=p->next;
//	}
//}
//void FreeList(LinkList head){
//	LinkList p,q;
//	p=q=head;
//	while(p){
//		q=p->next;
//		free(p);
//		p=q;
//	}
//}
//int main()
//{
//	LinkList head1;
//	head1=CreateList();
//	head1=ReverseList(head1);
//	PrintList(head1);
//	FreeList(head1);
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	char *p="hello";
//	p[2]='p';
//	printf("%s",p);
//	return 0;
//}

//#include <stdio.h>
//#include <stdlib.h>
//#include <time.h>
//struct card{
//	int face;
//	int point;
//};
//char *Num[13]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
//char *Color[4]={"红心","梅花","黑桃","方块"};
//struct card CARD[4][13];
//void GiveCard(int *tmp){
//	int i=0,j=0,k;
//	while(i<52){
//		k=52*rand()/RAND_MAX+0;
//		for(j=0;j<i;j++)
//			if(k==tmp[j])
//				break;
//		if(j==i)
//			tmp[i++]=k;
//	}
//}
//void DisplayCard(){
//	int i=0,j=0;
//	printf("Player1\tPlayer2\tPlayer3\tPlayer4\n");
//	for(i=0;i<13;i++){
//		for(j=0;j<4;j++){
//			printf("%s %s\t",Color[CARD[j][i].face],Num[CARD[j][i].point]);
//		}
//		printf("\n");
//	}
//}
//int main(){
//	int tmp[52],i,j,k;
//	srand((unsigned)time(NULL));
//	GiveCard(tmp);
//	for(k=0;k<52;k++)
//	{
//		i=k%4;
//		j=k/4;
//		CARD[i][j].face=tmp[k]%4;
//		CARD[i][j].point=tmp[k]/4;
//	}
//	DisplayCard();
//	return 0;
//}

//#include <stdio.h>
//#define N 13
//#define S 1
//#define M 3
//int main(){
//	int i, pos,s=S-1,j=N,arr[N];
//	for(i=0;i<N;i++)
//		arr[i]=i+1;
//	i=0;
//	pos=s-1;
//	do{
//		pos++;
//		if(pos==N)
//			pos=0;
//		if(arr[pos]!=-1)
//		{
//			i++;
//			if(i==M)
//			{
//				i=0;
//				printf("%d ",arr[pos]);
//				arr[pos]=-1;
//				j--;
//			}
//		}
//	}while(j>0);
//	return 0;
//}

//#include <stdio.h>
//#include <ctype.h>
//#include <string.h>
//void function(char *str){
//	char tmp;
//	int i,len,j;
//	len=strlen(str);
//	for(i=0;i<len;i++){
//		if(isdigit(str[i])){
//			tmp=str[i];
//			for(j=i;str[j];j++)
//				str[j]=str[j+1];
//			str[j-1]=tmp;
//			len--;
//			i--;
//		}
//	}
//}
//int main(){
//	char str[80];
//	
//	gets(str);
//   function(str);
//	printf("%s",str);
//	return 0;
//}

#include <stdio.h>
void move(int num,char one,char two,char three){
	if(num==1){
		printf("%c-->%c\n",one,three);
	}
	else
	{
		move(num-1,one,three,two);
		printf("%c-->%c\n",one,three);
		move(num-1,two,one,three);
	}
}
int main()
{
	int Num=3;
	printf("The step is:\n");
	move(Num,'A','B','C');
	return 0;
}
